package com.tencent.sr.iris.activity.interfaces.client.task;


import com.tencent.sr.iris.activity.interfaces.request.group.AdvisorGroupTaskRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.AdvisorGroupTaskSecondRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.AdvisorGroupTaskThirdRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.GroupTaskRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.GroupTaskSecondRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.RankConfigRequest;
import com.tencent.sr.iris.activity.interfaces.request.group.TaskStatisticsRequest;
import com.tencent.sr.iris.activity.interfaces.response.group.*;
import com.tencent.sr.iris.activity.interfaces.response.group.operate.OperateSecondBoardResponse;
import com.tencent.sr.rmall.common.primitive.HttpResult;
import com.tencent.sr.rmall.common.request.PaginationRequest;
import com.tencent.sr.rmall.common.response.PaginationResponse;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(name = "iris-activity-core-service", contextId = "IrisGroupTaskBoardClient",
        path = "/api/v1/iris/iris-activity-core-service/task/board")
public interface IrisGroupTaskBoardClient {

    @PostMapping("/queryGroupTaskBoard")
    @ApiOperation(value = "查询团长任务一级列表-团长视角")
    HttpResult<PaginationResponse<GroupTaskBoardResponse>> queryGroupTaskBoard(
            @RequestBody @Validated PaginationRequest<GroupTaskRequest> request);

    @PostMapping("/queryGroupSecondTaskBoard")
    @ApiOperation(value = "查询团长任务二级列表-团长视角")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryGroupSecondTaskBoard(
            @RequestBody @Validated PaginationRequest<GroupTaskSecondRequest> request);

    @PostMapping("/queryGroupTaskSecondBoard/normal")
    @ApiOperation(value = "查询团长任务二级列表-团长视角(特邀/普通团推团)")
    HttpResult<PaginationResponse<GroupNormalTaskSecondResponse>> queryGroupTaskSecondBoardNormal(
            @RequestBody @Validated PaginationRequest<GroupTaskSecondRequest> request
    );

    @PostMapping("/queryAdvisorBoard")
    @ApiOperation(value = "查询团长任务一级列表-导师视角")
    HttpResult<PaginationResponse<AdvisorBoardResponse>> queryAdvisorBoard(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskRequest> request);

    @PostMapping("/queryAdvisorSecondBoard")
    @ApiOperation(value = "查询团长任务二级列表-导师视角")
    HttpResult<GroupTaskPaginationResponse<OperateSecondBoardResponse>> queryAdvisorSecondBoard(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request);

    @PostMapping("/queryAdvisorSecondBoardInvite")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(邀新有礼)")
    HttpResult<PaginationResponse<AdvisorBoardInviteSecondResponse>> queryAdvisorSecondBoardInvite(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request);

    @PostMapping("/queryAdvisorSecondBoardSprint")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(GMV冲刺赛/销量冲刺赛)")
    HttpResult<GroupTaskPaginationResponse<AdvisorBoardSprintSecondResponse>> queryAdvisorSecondBoardSprint(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request);

    @PostMapping("/queryAdvisorSecondBoardFirstOrder")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(首单任务)")
    HttpResult<PaginationResponse<AdvisorBoardFirstOrderSecondResponse>> queryAdvisorSecondBoardFirstOrder(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request);

    @PostMapping("/queryAdvisorSecondBoardCommission")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(佣金回滚)")
    HttpResult<PaginationResponse<AdvisorBoardCommissionSecondResponse>> queryAdvisorSecondBoardCommission(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request);

    @PostMapping("/queryAdvisorSecondBoardNormal")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(团推团任务)")
    HttpResult<PaginationResponse<AdvisorNormalTaskSecondResponse>> queryAdvisorSecondBoardNormal(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request
    );

    @PostMapping("/queryAdvisorSecondBoardRank")
    @ApiOperation(value = "查询团长任务二级列表-导师视角(排行榜)")
    HttpResult<PaginationResponse<AdvisorBoardRankSecondResponse>> queryAdvisorSecondBoardRank(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskSecondRequest> request
    );

    @PostMapping("/queryAdvisorThirdBoard")
    @ApiOperation(value = "查询团长任务三级列表-导师视角")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryAdvisorThirdBoard(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request);

    @PostMapping("/queryAdvisorThirdBoardInvite")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(邀新有礼)")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryAdvisorThirdBoardInvite(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request);

    @PostMapping("/queryAdvisorThirdBoardFirstOrder")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(首单任务)")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryAdvisorThirdBoardFirstOrder(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request);

    @PostMapping("/queryAdvisorThirdBoardSprint")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(GMV冲刺赛/销量冲刺赛)")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryAdvisorThirdBoardSprint(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request);

    @PostMapping("/queryAdvisorThirdBoardCommission")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(佣金回滚)")
    HttpResult<PaginationResponse<AdvisorBoardCommissionThirdResponse>> queryAdvisorThirdBoardCommission(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request);

    @PostMapping("/queryAdvisorThirdBoardNormal")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(团推团)")
    HttpResult<PaginationResponse<GroupNormalTaskSecondResponse>> queryAdvisorThirdBoardNormal(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request
    );

    @PostMapping("/queryAdvisorThirdBoardRank")
    @ApiOperation(value = "查询团长任务三级列表-导师视角(排行榜)")
    HttpResult<PaginationResponse<GroupTaskBoardSecondResponse>> queryAdvisorThirdBoardRank(
            @RequestBody @Validated PaginationRequest<AdvisorGroupTaskThirdRequest> request
    );

    @PostMapping("/queryAdvisorTaskStatistics")
    @ApiOperation(value = "导师-团长任务统计")
    HttpResult<TaskStatisticsResponse> queryAdvisorTaskStatistics(@RequestBody @Validated TaskStatisticsRequest req);

    @PostMapping("/querySellerTaskStatistics")
    @ApiOperation(value = "营销-团长任务统计")
    HttpResult<TaskStatisticsResponse> querySellerTaskStatistics(@RequestBody @Validated TaskStatisticsRequest req);

    @PostMapping("/queryRankConfigs")
    @ApiOperation(value = "排行榜任务-奖励阶段下拉列表")
    HttpResult<List<RankAwardConfigResponse>> queryRankConfigs(@RequestBody @Validated RankConfigRequest request);
}
